package imp.gestores;

import imp.DAO.DAO;
import imp.DAO.ServiceFinder;

import imp.clases.ActividadE;

import imp.clases.GrupoActividadE;

import imp.clases.TipoActividadE;
import imp.util.BeanUtil;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.ajax4jsf.component.html.HtmlAjaxCommandButton;
import org.richfaces.component.html.HtmlDataTable;

public class GestorGruposActividades extends BeanUtil {
	private GrupoActividadE currentGrupoActividadE;
    private TipoActividadE currentTipoActividadE;
    private ActividadE currentActividadE;
    
    private HtmlDataTable tablaGrupos;
    private HtmlDataTable tablaTiposActividades;
    private HtmlDataTable tablaActividades;
        //private ListDataModel listado;
    private List<GrupoActividadE> listadoActual;
    private String filtroBusqueda;
    private String accion;
    private String accionTipo;
    private Boolean renderTipo;
    private String accionActividad;
    private Boolean renderActividad;

    private DAO dao = (DAO)ServiceFinder.findBean("SpringHibernateDao");

    public GestorGruposActividades(){
        this.listar();
        this.accion="Ins";
        this.accionTipo="Ins";
        this.renderTipo=false;
        //this.currentCanton=new Canton();
    }

    public void buscar(){

    }

    public String listar() {

        try {
                listadoActual = dao.find(GrupoActividadE.class);

        } catch (Exception e) {
            super.addErrorMessage(e.getMessage());
        }
        return null;
    }

    public static List<SelectItem> listar(DAO dao) {

        //DAO daoCantones = (DAO)ServiceFinder.findBean("SpringHibernateDao");

        List<SelectItem> items = new ArrayList<SelectItem>();
        try {
            List<GrupoActividadE> grupos = dao.find("from GrupoActividadE");
        //List<Canton> cantones = GestorCantones.listarCantones();
            for (GrupoActividadE grupo : grupos) {
                SelectItem prd = new SelectItem(grupo.getCodigo(), grupo.getNombre());
                items.add(prd);
            }


        } catch (Exception e) {
            //super.addErrorMessage(e.getMessage());
        }
        return items;
    }

    public String eliminar(){
                this.currentGrupoActividadE = (GrupoActividadE) tablaGrupos.getRowData();

		try
		{
			//session.delete(currentOrden);
			//tx.commit();
                    dao.delete(currentGrupoActividadE);
		}
		catch (Throwable ex)
		{
			super.addErrorMessage(ex.getMessage());
			return null;
		}
		listar();

		return null;
	}
     public String editarTipoActividad(){

                this.accionTipo="Mod";
                this.renderTipo=true;
		currentTipoActividadE = (TipoActividadE)tablaTiposActividades.getRowData();
		return null;
	}
     public String nuevoTipoActividad(){

                this.accionTipo="Ins";
                this.renderTipo=true;
		currentTipoActividadE = new TipoActividadE();
		return null;
	}
     public String cerrarTipoActividad(){

                //this.accionCanton="Ins";
                this.renderTipo=false;
		//currentCanton = new Canton();
		return null;
	}
      public String eliminarTipoActividad(){

		currentTipoActividadE = (TipoActividadE)tablaTiposActividades.getRowData();
                this.currentGrupoActividadE.removeTipoActividadE(currentTipoActividadE);
		return null;
	}
      public String grabarTipoActividadE(){
          
    	  	if (this.accionTipo=="Ins")
    	  		this.currentGrupoActividadE.addTipoActividadE(this.currentTipoActividadE);
            //currentCanton = (Canton)tablaCantones.getRowData();
          
          this.renderTipo=false;
          return null;
	}
      
      
    //ACTIVIDAD

      public void grabarActividad(ActionEvent evento){
           if (this.accionActividad.equals("Ins")){

               this.currentTipoActividadE.addActividadE(currentActividadE);

         }
           HtmlAjaxCommandButton boton = (HtmlAjaxCommandButton) evento.getComponent();
           boton.setOncomplete("Richfaces.hideModalPanel('panelActividades')");

      }
      
       public String eliminarActividad(){
          currentActividadE = (ActividadE)tablaActividades.getRowData();
               this.currentTipoActividadE.removeActividadE(currentActividadE);
		return null;
      }

        public void editarActividad(ActionEvent evento){
           this.accionActividad="Mod";
		currentActividadE = (ActividadE)tablaActividades.getRowData();
		HtmlAjaxCommandButton boton = (HtmlAjaxCommandButton) evento.getComponent();
               boton.setOncomplete("Richfaces.showModalPanel('panelActividades', {top:'400px', left:'300px', height:'40px'})");
      }
        
      public void nuevaActividad(ActionEvent evento){
           this.accionActividad="Ins";
		currentActividadE = new ActividadE();
               HtmlAjaxCommandButton boton = (HtmlAjaxCommandButton) evento.getComponent();
               boton.setOncomplete("Richfaces.showModalPanel('panelActividades', {top:'400px', left:'300px', height:'40px'})");
      }
      
    public String editar()
	{
                this.inicializarGrupo();
                this.accion="Mod";
		currentGrupoActividadE = (GrupoActividadE)tablaGrupos.getRowData();
		return "grupoActividadesEnfermera";
	}
    private void inicializarGrupo(){
        this.renderTipo = false;
    }
     public String nuevo() {
        try
        {
            this.inicializarGrupo();
                    this.accion="Ins";
                   this.currentGrupoActividadE = new GrupoActividadE();
                   //this.currentCanton=new Canton();

                   return "grupoActividadesEnfermera";

        }
        catch  (Throwable ex) {
                    super.addErrorMessage(ex.getMessage());
        }
                return null;
    }
      public String cerrar() {

                return null;
            }

       public String grabar() {

        try {

                dao.persist(this.currentGrupoActividadE);


        } catch (Exception e) {
            super.addErrorMessage(e.getMessage());
        }
        this.listar();
        return "gruposActividadesEnfermera";
    }

	public GrupoActividadE getCurrentGrupoActividadE() {
		return currentGrupoActividadE;
	}

	public void setCurrentGrupoActividadE(GrupoActividadE currentGrupoActividadE) {
		this.currentGrupoActividadE = currentGrupoActividadE;
	}

	public TipoActividadE getCurrentTipoActividadE() {
		return currentTipoActividadE;
	}

	public void setCurrentTipoActividadE(TipoActividadE currentTipoActividadE) {
		this.currentTipoActividadE = currentTipoActividadE;
	}

	public HtmlDataTable getTablaGrupos() {
		return tablaGrupos;
	}

	public void setTablaGrupos(HtmlDataTable tablaGrupos) {
		this.tablaGrupos = tablaGrupos;
	}

	public HtmlDataTable getTablaTiposActividades() {
		return tablaTiposActividades;
	}

	public void setTablaTiposActividades(HtmlDataTable tablaTiposActividades) {
		this.tablaTiposActividades = tablaTiposActividades;
	}

	public List<GrupoActividadE> getListadoActual() {
		return listadoActual;
	}

	public void setListadoActual(List<GrupoActividadE> listadoActual) {
		this.listadoActual = listadoActual;
	}

	public String getFiltroBusqueda() {
		return filtroBusqueda;
	}

	public void setFiltroBusqueda(String filtroBusqueda) {
		this.filtroBusqueda = filtroBusqueda;
	}

	public String getAccion() {
		return accion;
	}

	public void setAccion(String accion) {
		this.accion = accion;
	}

	public String getAccionTipo() {
		return accionTipo;
	}

	public void setAccionTipo(String accionTipo) {
		this.accionTipo = accionTipo;
	}

	public Boolean getRenderTipo() {
		return renderTipo;
	}

	public void setRenderTipo(Boolean renderTipo) {
		this.renderTipo = renderTipo;
	}

	public ActividadE getCurrentActividadE() {
		return currentActividadE;
	}

	public void setCurrentActividadE(ActividadE currentActividadE) {
		this.currentActividadE = currentActividadE;
	}

	public HtmlDataTable getTablaActividades() {
		return tablaActividades;
	}

	public void setTablaActividades(HtmlDataTable tablaActividades) {
		this.tablaActividades = tablaActividades;
	}

	public String getAccionActividad() {
		return accionActividad;
	}

	public void setAccionActividad(String accionActividad) {
		this.accionActividad = accionActividad;
	}

	public Boolean getRenderActividad() {
		return renderActividad;
	}

	public void setRenderActividad(Boolean renderActividad) {
		this.renderActividad = renderActividad;
	}

	public DAO getDao() {
		return dao;
	}

	public void setDao(DAO dao) {
		this.dao = dao;
	}


}
